<?php

namespace App\Http\Controllers\Admin;

use App\Models\Admin\AdminPermission;
use App\Models\Admin\AdminRole;
use App\Models\Admin\AdminRolePermission;
use App\Models\Admin\AdminUser;
use App\Models\Admin\AdminUserRole;
use App\Models\RTresult;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;

class AdminUserController extends Controller
{
    //显示管理员视图
    public function index(){
        //用户信息和角色信息
        $users = AdminUser::select(DB::Raw('admin_users.*,GROUP_CONCAT(admin_roles.display_name) as dname'))
            ->leftJoin('admin_user_role', 'admin_user_role.user_id','admin_users.id')
            ->leftJoin('admin_roles', 'admin_roles.id', 'admin_user_role.role_id')
            ->groupBy('admin_users.id')
            ->get();
//     dd($users);
        //将值传递到视图中
        return view('admin.admin_user',['users'=>$users]);
    }
    //管理员的是否允许登录的状态
    public function status(Request $request){
//        dd($request);
        //调用状态值
        $rt_result = new RTresult();
        //判断是否  显示 或者 禁用
        $is_allowed = $request->is_allowed;
        //获取  管理员表 的ID
        $admin_id = $request->admin_id;
        if ($is_allowed == 1) {
            $is_allowed = 0;
        } else {
            $is_allowed = 1;
        }
        //根据  点击所在的ID  改变是否显示或者禁用
        $res = AdminUser::find($admin_id)->update(['is_allowed' => $is_allowed]);

        if ($res) {
            $rt_result->status = true;
            $rt_result->message = $is_allowed;
            return $rt_result->toJson();
        }
    }
    //跳转到增加管理员的视图
    public function create(){
        //查询所有的角色
        $roles = AdminRole::all();
//        dd($roles);
        return view('admin.admin_user_create')->with('roles', $roles);
    }
    //添加数据库到数据库
    public function store(Request $request){
        //数据验证
        $id =  AdminUser::insertGetId(
            [    //使用了哈希加密算法，现在测试一会加
                'name' => $request->get('name'),
                //'password' => Hash::make($request->get('password')),
                'password' =>$request->get('password')
            ]
        );
        //添加角色
        foreach ($request->role_id as $value) {
            AdminUserRole::insert(
                [
                    'role_id' => $value,
                    'user_id' => $id
                ]
            );
        }
        return redirect('/admin/admin_user');
    }
    public function edit($id){
        //查询当前用户的信息和角色信息
        $user = AdminUser::find($id);
        //查询用户与角色的中间表
        $role_id = AdminUserRole::select('role_id')->where('user_id', $id)->get()->toArray();
        //转为一维数组
        $role_ids = array();
        foreach ($role_id as $v) {
            //指定的角色ID，1超级管理员 ；2普通管理员
            $role_ids[] = $v['role_id'];
//            dd($role_id);
        }
        //查询所有的权限
        $roles = AdminRole::all();
        return view('admin.admin_user_edit')
            ->with('user', $user)
            ->with('roles', $roles)
            ->with('role_ids', $role_ids);
    }
    //修改管理员数据到数据库
    public function update(Request $request,$id){
        //修改管理员表的信息
        $user = AdminUser::find($id);
        $user->name = $request->get('name');
        $user->password = $request->get('password');
        $user->save();
        //修改权限
        //现将权限删除   再添加
        AdminUserRole::where('user_id',$id)->delete();
        //循环添加权限
        foreach ($request->get('role_id') as $value) {
//            dump($request);die;
//            dd($value);
            AdminUserRole::insert(
                [

                    'role_id' => $value,
                    'user_id' => $id,
                ]
            );
        }
        return redirect('/admin/admin_user');
    }
    public function destroy($id){
        //删除用户表中的数据
        $user = AdminUser::find($id);
        //再将用户表中的数据删除
        AdminUserRole::where('user_id', $id)->delete();

        if($user->delete()){
            return redirect('admin/admin_user')->with('success','删除成功'.$id);
        }else{
            return redirect('admin/admin_user')->with('fails','删除失败'.$id);
        }

    }
}
